package com.fyl.leetcode.binarySearch;

/**
 * @author:fyl
 * @date 2021/8/26 9:17
 * @Modified By:
 * @Modified Date:
 * @Description: 367
 * 给定一个 正整数 num ，编写一个函数，如果 num 是一个完全平方数，则返回 true ，否则返回 false 。
 * 进阶：不要 使用任何内置的库函数，如 sqrt 。
 * 示例 1：
 * 输入：num = 16
 * 输出：true
 * 示例 2：
 * 输入：num = 14
 * 输出：false
 */
public class IsPerfectSquare {
    public boolean isPerfectSquare(int num) {
        if (num <= 1) return true;
        int left = 0;
        int right = num / 2;
        while (left <= right) {
            int index = left + ((right - left) >> 1);
            if (num == Math.pow(index, 2)) {
                return true;
            } else if (Math.pow(index, 2) < num) {
                left = index + 1;
            } else {
                right = index - 1;
            }
        }
        return false;
    }
}
